/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Controladores;

import DAOS.DAOChofer;
import DAOS.DAOFeriados;
import Modelos.Fecha;
import Vistas.VFeriados;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;


public class ControladorFeriados implements ActionListener{
     private VFeriados vferiados;
     private DAOFeriados feriadosDAO;
     
    public ControladorFeriados() {
        super();
        vferiados = new VFeriados();
        feriadosDAO = new DAOFeriados();
        
        vferiados.setLocationRelativeTo(null);
        vferiados.setVisible(true);
        vferiados.agregarListener(this);
        
        enableBotones(false);
        
        vferiados.getBtnNuevo().setEnabled(true);
        vferiados.getBtnSalirDF().setEnabled(true);
        vferiados.getBtnBuscar().setEnabled(true);
        vferiados.getBtnCancelar().setEnabled(true);
        
        cargarTablaFeriados();
        
        
        
    }
    public void registrarFeriados()
    {   
     Date fechaFeriada = vferiados.getDchFecha().getDate();
     
      Fecha fechaM = new Fecha(fechaFeriada);
     
      feriadosDAO.registrarFeriado(fechaM);            
      cargarTablaFeriados();
            
            vferiados.mostrarMensaje("Se ha agregado una fecha nueva");
            
            vferiados.getBtnBuscar().setEnabled(true);
            vferiados.getBtnNuevo().setEnabled(true);
            vferiados.getBtnCancelar().setEnabled(true);
            vferiados.getBtnSalirDF().setEnabled(true);
   }
    
    
    private void Limpiar()    
{
     vferiados.getDchFecha().setDate(null);
  
}    
    
    private void enableBotones(boolean Status)
    {
        vferiados.getBtnGuardarDF().setEnabled(Status);
        vferiados.getBtnActualizar().setEnabled(Status);
        vferiados.getBtnEliminarDF().setEnabled(Status);
        vferiados.getBtnCancelar().setEnabled(Status);
        vferiados.getBtnNuevo().setEnabled(Status);
        vferiados.getBtnBuscar().setEnabled(Status);
        vferiados.getBtnSalirDF().setEnabled(Status);
    }

    
   private void cargarTablaFeriados()
   {
      
    int Fila;
    Fecha fecha=new Fecha();
    feriadosDAO.getFechas().clear();
    feriadosDAO.cargarFeriados();
    vferiados.getTabDias().removeAll();

    for (Fila=0;Fila<feriadosDAO.getFechas().size();Fila++)
    {
       fecha=feriadosDAO.getFechas().get(Fila);
       vferiados.getTabDias().setValueAt(fecha.getDia(), Fila, 0);
    }
    
   }  
   
   
     public void eliminarFeriados()
        {
            feriadosDAO = new DAOFeriados();
            feriadosDAO.eliminarChofer(vferiados.getDchFecha().getDate());
            vferiados.mostrarMensaje("El chofer ha sido eliminado exitosamente");
            Limpiar();
         
            enableBotones(false);
            
            vferiados.getBtnBuscar().setEnabled(true);
            vferiados.getBtnNuevo().setEnabled(true);
            vferiados.getBtnSalirDF().setEnabled(true);
            vferiados.getBtnCancelar().setEnabled(true);
            vferiados.getDchFecha().requestFocus();
            
        }

    @Override
    public void actionPerformed(ActionEvent e)
    {
         if(e.getSource().equals(vferiados.getBtnCancelar()))
    {
        
        enableBotones(false);
        vferiados.getBtnNuevo().setEnabled(true);
        vferiados.getBtnSalirDF().setEnabled(true);
        vferiados.getBtnBuscar().setEnabled(true);
        vferiados.getBtnCancelar().setEnabled(true);
        Limpiar();
    }
         
     if (e.getSource().equals(vferiados.getBtnBuscar()))
        {
                    String Cadena;
                    Fecha fechax=new Fecha();
                    Cadena =vferiados.getDchFecha().getDate().toString();
                 
                    if (Cadena.length() > 0){

                   fechax=feriadosDAO.buscarFecha(vferiados.getDchFecha().getDate()); 
                        vferiados.getDchFecha().setDate(fechax.getDia());
                   
                        enableBotones(false);
                        vferiados.getBtnActualizar().setEnabled(true);
                        vferiados.getBtnEliminarDF().setEnabled(true);
                        vferiados.getBtnCancelar().setEnabled(true);
                        vferiados.getBtnSalirDF().setEnabled(true);

//                           enableBotones(false);
//                           vcooperativa.getBtnGuardar().setEnabled(true);
//                           vcooperativa.getBtnCancelar().setEnabled(true);
//                           enableTxt(true);
//                           vcooperativa.getTxtNombre().requestFocus();
                   }
        }
               
    if(e.getSource().equals(vferiados.getBtnNuevo()))
     {
           enableBotones(false);
           vferiados.getBtnGuardarDF().setEnabled(true);
           vferiados.getBtnCancelar().setEnabled(true);
           vferiados.getBtnSalirDF().setEnabled(true);
           Limpiar();           
     }
    if(e.getSource().equals(vferiados.getBtnSalirDF()))
    {
        vferiados.dispose();
    }
    if(e.getSource().equals(vferiados.getBtnGuardarDF()))
     {
          if(vferiados.getDchFecha() == null)
         {
             vferiados.mostrarMensaje("Seleccione una fecha");
             return;
         }
        
        Calendar fechaActual = Calendar.getInstance(Locale.ENGLISH);
        fechaActual.set(Calendar.HOUR_OF_DAY, 0);
        fechaActual.set(Calendar.MINUTE, 0);
        fechaActual.set(Calendar.SECOND, 0);
        fechaActual.set(Calendar.MILLISECOND, 0);
        Date fechax=fechaActual.getTime();
 
    if(vferiados.getDchFecha().getDate().compareTo(fechax)<0)
         {
            vferiados.mostrarMensaje("No puede seleccionar una fecha que ya paso");
            return;
        }
         registrarFeriados();
        
     }
     if(e.getSource().equals(vferiados.getBtnEliminarDF()))
    {
        
        eliminarFeriados();
    }
    
    
    
    }
    
    
   
    
  
    
}
